Computer virtualization is a technique that involves encapsulating a computing machine platform into a virtual machine (VM) executed under the control of virtualization software running on a hardware computing platform (also referred to herein as a “host server”). A group of hardware computing platforms may be organized as a cluster to provide resources for VMs. In a data center, it is common to see hundreds, even thousands, of VMs running on multiple clusters of host servers.
An administrator may use virtualization management software to manage virtual machine configurations and computing resource allocations. Because of the large number of VMs managed within some data centers, and sometimes, across multiple data centers, some administrator tasks are automated. For example, software techniques such as adaptive resource scheduling and adaptive power management have been developed to assist the administrator in balancing workloads across host servers and powering host servers on and off as needed.
One feature of virtualized computing environments controlled by the virtualization management software is virtual networking. VMs can be created with software-based virtual network adapters that are logically connected to physical network adapters in the host computer. The virtual network adapters are connected to the physical network adapters through software-based virtual switches. One way to manage virtual network connections in data centers with a large number of VMs running on multiple host servers is via a “distributed virtual switch” (DVSwitch) described in U.S. Pat. No. 8,195,774, incorporated in its entirety herein by reference. DVSwitches permit users to manage virtual switches on multiple host servers as if the ports of those virtual switches belonged to a single switch. Further, DVSwitches persist port runtime states across host servers.
Virtualization software may incorporate a variety of modules to enhance or extend the functionality of DVSwitches and other aspects of the virtualization software. For example, a module may encrypt packets passing through a distributed virtual port (DVPort) of a DVSwitch. Management software running on a virtualization management platform may configure and monitor modules across host systems. In some cases, the management software communicates with the modules via interfaces having fixed type properties and methods on the virtualization management platform and intermediate software layer(s) (also referred to herein as “intermediate layers”) of the virtualization software. Such rigid interfaces are difficult to change, particularly as the number and/or complexity of intermediate layers increase. To expose a new module feature to management software, for example, the data model and interfaces of the virtualization management platform and the intermediate layers must all be changed. In such a case, interface dependency among the various interfaces may require the virtualization management platform and the intermediate layers to be upgraded simultaneously.